package 查找;

public class binarySearch {
    public static void main(String[] args) {
        //**基本思想**：也称为是折半查找，属于有序查找算法。用给定值先与中间结点比较。比较完之后有三种情况：
        //* 相等
        //  说明找到了
        //* 要查找的数据比中间节点小
        //  说明要查找的数字在中间节点左边
        //* 要查找的数据比中间节点大
        //  说明要查找的数字在中间节点右边

        //定义一个数组
        int[] arr = {7, 23, 79, 81, 103, 127, 131, 147};
        int number = 0;
        int index = BinarySearch(arr ,number);
        System.out.println(index);
    }

    private static int BinarySearch(int[] arr , int number) {
        int min = 0;
        int max = arr.length - 1;
        while (true) {
            if (min > max) {
                return -1;
            }
            int mdel = (min + max)/2;
            if (arr[mdel] >number) {
                max = mdel - 1;
            } else if (arr[mdel] < number) {
                min = mdel + 1;
            }else {
                return mdel;
            }
        }
    }
}
